perm filename TEST.SAI[C,BGB] blob sn#101489 filedate 1974-05-09 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00004 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002	BEGIN "TEST"
C00004 00003	SUBR AVERAGE
C00005 00004	α MAIN EXECUTION
C00006 ENDMK
C⊗;
BEGIN "TEST"
	REQUIRE "ABBREV[SYS,BGB]" SOURCE_FILE;
	SAFE INTEGER ARRAY HEADER[0:127];
	SAFE INTEGER ARRAY TVBUF[0:10367];
	SAFE REAL ARRAY BUF[-2*288:62208+2*288-1];

SUBR INVIDEO;
BEGIN "INVIDEO"
	OPEN(1,"DSK",8,3,0,0,0,0);
	LOOKUP(1,"A2.TMP[DAT,BGB]",0);
	ARRYIN(1,HEADER[0],128);
	ARRYIN(1,TVBUF[0],10368);
	RELEASE(1);OUTSTR("INPUT EOF"&↓);
END "INVIDEO";

SUBR OUTVIDEO;
BEGIN "OUTVIDEO"
	OPEN(1,"DSK",8,0,3,0,0,0);
	ENTER(1,"TMP3.TMP[DAT,BGB]",0);
	ARRYOUT(1,HEADER[0],128);
	ARRYOUT(1,TVBUF[0],10368);
	RELEASE(1);OUTSTR("OUTPUT EOF"&↓);
END "OUTVIDEO";

SUBR UNPACK;
BEGIN "UNPACK"
	ITG I,PTR;
	PTR ← POINT(6,TVBUF[0],-1);
	FOR I←0 THRU 62207 DO BUF[I]←ILDB(PTR);
	OUTSTR("TVBUF UNPACKED."&↓);
END "UNPACK";

SUBR AVERAGE;
BEGIN "AVERAGE"
	ITG R,C,U,V,PTR,J,CNT;
	REAL SUM,X,Y;
	PTR ← POINT(6,TVBUF[0],-1);
	FOR R←0 THRU 215 DO
BEGIN
	FOR C←0 THRU 287 DO
BEGIN	
	SUM ← 0;
	CNT ← 0;
	X ← BUF[R*288+C];
	FOR U← -2 THRU +2 DO
	FOR V← -2 THRU +2 DO
	BEGIN
		Y ← BUF[(R+U)*288 + (C+V)];
		IF ABS(X-Y)≤15 THEN ⊂ SUM←SUM+Y;CNT←CNT+1;⊃;
	END;
	IF CNT≤5 THEN
	⊂ SUM ← 0;CNT ← 8;
	  FOR U← -1,0,+1 DO
	  FOR V← -1,0,+1 DO IF (U OR V) THEN
	  SUM ← SUM+BUF[(R+U)*288 + (C+V)];
	⊃;
	J ← SUM/CNT;
	IDPB(J,PTR);
END;
	OUTSTR(CVS(R)&" ");
	IF INCHRS≥0 THEN RETURN;
END;
END "AVERAGE";

α MAIN EXECUTION;
	INVIDEO;
	UNPACK;
	AVERAGE;
	OUTVIDEO;
END "TEST";